package com.jianhua.backend.controller;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.jianhua.backend.common.R;
import com.jianhua.backend.domain.dto.LoginDto;
import com.jianhua.backend.domain.dto.RegisterDto;
import com.jianhua.backend.domain.dto.ResetPasswordDto;
import com.jianhua.backend.domain.vo.LoginVo;
import com.jianhua.backend.service.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * <p>
 * 存储系统管理员用户的基本信息 前端控制器
 * </p>
 *
 * @author author
 * @since 2025-07-02
 */
@RestController
@RequestMapping("/admin")
public class AdminController {

    @Autowired
    private AdminService adminService;

    /**
     * 用户登录接口
     * 该接口用于处理用户的登录请求，接收登录信息并返回登录结果
     *
     * @param loginDto 包含用户登录信息的Dto对象
     * @return 返回登录结果，包含用户信息和相关状态
     */
    @PostMapping("/login")
    public R login(@RequestBody LoginDto loginDto){
        LoginVo login = adminService.login(loginDto);
        return R.success(login);
    }

    /**
     * 用户注册接口
     * 该接口用于处理用户注册请求，接收注册信息并进行注册操作。
     *
     * @param registerDto 注册信息，包含用户名、密码等
     * @return 返回操作结果，成功则返回成功信息
     */
    @PostMapping("/register")
    public R register(@RequestBody RegisterDto registerDto){
        adminService.register(registerDto);
        return R.success(null);
    }

    /**
     * 重置密码接口
     * 该接口用于处理用户重置密码的请求，接收重置密码的DTO对象并调用服务层进行密码重置操作。
     *
     * @param resetPasswordDto 重置密码的DTO对象，包含重置密码所需的信息
     * @return 返回操作结果，成功时返回成功响应
     */
    @PostMapping("/resetPassword")
    public R resetPassword(@RequestBody ResetPasswordDto resetPasswordDto){
        adminService.resetPassword(resetPasswordDto);
        return R.success(null);
    }


}
